package org.xlx.xlx_oa.reimburse.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.xlx.xlx_oa.common.enums.ProcessStatusEnums;
import org.xlx.xlx_oa.common.enums.ReimburseItemEnums;
import org.xlx.xlx_oa.reimburse.convertor.ReimburseConvertor;
import org.xlx.xlx_oa.reimburse.domain.ReimburseImage;
import org.xlx.xlx_oa.reimburse.domain.ReimburseItem;
import org.xlx.xlx_oa.reimburse.domain.dto.ReimburseImageDto;
import org.xlx.xlx_oa.reimburse.domain.dto.ReimburseItemDto;
import org.xlx.xlx_oa.reimburse.mapper.ReimburseItemMapper;

import java.util.List;

@Service
public class ReimburseItemService {
    private ReimburseConvertor reimburseConvertor = ReimburseConvertor.INSTANCE;
    @Autowired
    private ReimburseItemMapper itemMapper;

    /**
     * 保存报销事项信息
     *
     * @param reimburseId
     * @param list
     * @return
     */
    public Boolean saveItems(Long reimburseId, List<ReimburseItem> list) {
        UpdateWrapper<ReimburseItem> wrapper = new UpdateWrapper<>();
        wrapper.lambda().eq(ReimburseItem::getReimburseId, reimburseId);
        itemMapper.delete(wrapper);

        for (ReimburseItem reimburseItem : list) {
            itemMapper.insert(reimburseItem);
        }
        return true;
    }

    /**
     * 删除报销事项信息
     */
    public Boolean removeItems(Long reimburseId) {
        UpdateWrapper<ReimburseItem> wrapper = new UpdateWrapper<>();
        wrapper.lambda().eq(ReimburseItem::getReimburseId, reimburseId);
        return itemMapper.delete(wrapper) > 0;
    }

    /**
     * 根据报销单获得事项
     */
    public List<ReimburseItemDto> getItemsByApplyId(Long applyId){
        QueryWrapper<ReimburseItem> wrapper = new QueryWrapper<>();
        wrapper.lambda().eq(ReimburseItem::getReimburseId,applyId);
        List<ReimburseItem> items = itemMapper.selectList(wrapper);
        List<ReimburseItemDto> dtos = reimburseConvertor.convertToItemDtoList(items);
       dtos.forEach(dto->{
           ReimburseItemEnums reimburseItemEnums = ReimburseItemEnums.valueOf(ReimburseItemEnums.class, dto.getReimburseType());
           dto.setReimburseTypeName(reimburseItemEnums.getText());
       });
        return dtos;
    }
}
